#ifndef EDITORCORE_ENTITY_H
#define EDITORCORE_ENTITY_H

#include "Drawing/Color.h"
#include "Drawing/Pen.h"
#include "Drawing/Brush.h"
#include "EditorCore/IEntity.h"

namespace editor_core {

	class Entity : public IEntity
	{
	protected:
		Entity();
	public:
		virtual ~Entity();

		virtual inline int GetId() const { return m_id; }

		virtual void Draw( drawing::IDrawer* drawer );

		virtual inline bool IsSelected() const { return m_selected; }
		virtual inline void SetSelected( bool select ) { m_selected = select; }

	protected:
		virtual void DrawInner( drawing::IDrawer* drawer ) = 0;

	private:
		bool m_selected;
		int m_id;

	private:
		static int m_currentId;

		static const drawing::Color m_borderColorRegular;
		static const drawing::Color m_borderColorSelected;
		static const drawing::Color m_fillColorRegular;
		static const drawing::Color m_fillColorSelected;
		static const drawing::Pen m_regularPen;
		static const drawing::Pen m_selectedPen;
		static const drawing::Brush m_regularBrush;
		static const drawing::Brush m_selectedBrush;
	};
}

#endif
